Virtual machines can be provided in a computer to enhance flexibility and performance. A virtual machine typically refers to some arrangement of components (software and/or hardware) for virtualizing or emulating an actual computer, where the virtual machine can include an operating system and software applications. Virtual machines can allow different operating systems to be deployed on the same computer, such that applications written for different operating systems can be executed in different virtual machines (that contain corresponding operating systems) in the same computer. Moreover, the operating system of a virtual machine can be different from the host operating system that may be running on the computer on which the virtual machine is deployed.
In addition, a greater level of isolation is provided between or among applications running in different virtual machines. In some cases, virtual machines also allow multiple applications to more efficiently share common resources (processing resources, input/output or I/O resources, and storage resources) of the computer
For enhanced performance, virtual machines can be provided on multiple computers that are interconnected by a network. Under certain scenarios, migration of virtual machines between or among physical machines may be desirable. Conventionally, when migrating a virtual machine from a first computer to a second computer, the data associated with the virtual machine on the first computer is typically pushed (copied) across the network to the second computer prior to the virtual machine being migrated. The amount of data associated with the virtual machine on the first computer can be relatively large. As a result, the amount of time involving in pushing the data of the virtual machine from the first computer to the second computer can be relatively large. During this time, some portion of the data on the first computer may be modified (since the virtual machine is still executing on the first computer). The modified data portion will have to be pushed across the network to the second computer. If the original version of the modified data portion had previously been copied from the first computer to the second computer, then the subsequent copying of the modified data portion is duplicated effort that is wasteful of computing and networking resources.